package data.list;

import org.jdom.Element;

import data.Dataexception;
import data.list.Datalist;
import data.item.Talent;

public class Talentlist extends Datalist<Talent>
{
	/**
	 * CTor. Gibt nur die ID an die Datalist weiter
	 * (ID=>talents)
	 */
	public Talentlist()
	{		
		super("talents");
	}
	
	/**
	 * Die Methode verarbeitet den XML-Baum und wertet die Daten darin aus
	 * Fuer jedes Attribute-Element wird ein Attribute-Object erstellt.
	 * Falls doppelte IDs vorhanden sind, wird eine Exception geworfen
	 * 
	 * @param elem Das XML Element
	 * @throws Dataexception
	 */
	public void processXML(Element elem) throws Dataexception
	{
		if(elem == null)
			throw new IllegalArgumentException("no null-values allowed");
		
		if(elem.getName().compareToIgnoreCase("talents") == 0)
		{
			for(Object child : elem.getChildren())
			{
				// Neues Attribut erstellen
				Talent attr = new Talent((Element)child);
				
				// pruefen ob die ID noch frei ist
				if(this.data.containsKey(attr.getID()))
					throw new Dataexception("Item with this ID already loaded");
			
				this.data.put(attr.getID(), attr);
			}			
		}
		else
			throw new Dataexception("Invalid tagname.");
	}


}
